/**
 * 系统枚举值定义
 */

// 维修状态枚举
export const MAINTENANCE_STATUS = {
  PENDING: 1,    // 待处理
  REPAIR: 2,     // 维修中
  DETERMINED: 3, // 待确认
  COMPLETED: 4   // 维修完成
}

// 维修状态文本映射
export const MAINTENANCE_STATUS_TEXT = {
  [MAINTENANCE_STATUS.PENDING]: '待处理',
  [MAINTENANCE_STATUS.REPAIR]: '维修中',
  [MAINTENANCE_STATUS.DETERMINED]: '待确认',
  [MAINTENANCE_STATUS.COMPLETED]: '维修完成'
}

// 维修状态颜色映射
export const MAINTENANCE_STATUS_COLOR = {
  [MAINTENANCE_STATUS.PENDING]: '#909399',    // 灰色
  [MAINTENANCE_STATUS.REPAIR]: '#409EFF',     // 蓝色
  [MAINTENANCE_STATUS.DETERMINED]: '#E6A23C', // 橙色
  [MAINTENANCE_STATUS.COMPLETED]: '#67C23A'   // 绿色
}

// 房源状态枚举
export const HOUSE_STATUS = {
  VACANT: 0,      // 空置中
  RENTED: 1,      // 已出租
  OFFLINE: 2      // 已下线
}

// 房源状态文本映射
export const HOUSE_STATUS_TEXT = {
  [HOUSE_STATUS.VACANT]: '空置中',
  [HOUSE_STATUS.RENTED]: '已出租',
  [HOUSE_STATUS.OFFLINE]: '已下线'
}

// 房源状态颜色映射
export const HOUSE_STATUS_COLOR = {
  [HOUSE_STATUS.VACANT]: '#909399',    // 灰色
  [HOUSE_STATUS.RENTED]: '#67C23A',    // 绿色
  [HOUSE_STATUS.OFFLINE]: '#F56C6C'    // 红色
}

// 获取房源状态文本
export const getHouseStatusText = (status) => {
  return HOUSE_STATUS_TEXT[status] || '未知状态'
}

// 判断维修状态是否为可编辑状态（待处理、维修中）
export const isMaintenanceEditableStatus = (status) => {
  return status === MAINTENANCE_STATUS.PENDING || status === MAINTENANCE_STATUS.REPAIR
}

// 判断维修状态是否为已完成状态
export const isMaintenanceCompletedStatus = (status) => {
  return status === MAINTENANCE_STATUS.COMPLETED
}

// 租赁合同状态枚举
export const LEASE_CONTRACT_STATUS = {
  DRAFT: 0,    // 草稿
  VALID: 1,    // 有效
  INVALID: 2   // 无效
}

// 租赁合同状态文本映射
export const LEASE_CONTRACT_STATUS_TEXT = {
  [LEASE_CONTRACT_STATUS.DRAFT]: '草稿',
  [LEASE_CONTRACT_STATUS.VALID]: '有效',
  [LEASE_CONTRACT_STATUS.INVALID]: '无效'
}

// 租赁合同状态颜色映射
export const LEASE_CONTRACT_STATUS_COLOR = {
  [LEASE_CONTRACT_STATUS.DRAFT]: '#909399',    // 灰色
  [LEASE_CONTRACT_STATUS.VALID]: '#67C23A',    // 绿色
  [LEASE_CONTRACT_STATUS.INVALID]: '#F56C6C'   // 红色
}

// 获取租赁合同状态文本
export const getLeaseContractStatusText = (status) => {
  return LEASE_CONTRACT_STATUS_TEXT[status] || '未知状态'
}

// 业主合同状态枚举
export const HOMEOWNER_CONTRACT_STATUS = {
  DRAFT: 0,    // 草稿
  VALID: 1,    // 有效
  INVALID: 2   // 无效
}

// 业主合同状态文本映射
export const HOMEOWNER_CONTRACT_STATUS_TEXT = {
  [HOMEOWNER_CONTRACT_STATUS.DRAFT]: '草稿',
  [HOMEOWNER_CONTRACT_STATUS.VALID]: '有效',
  [HOMEOWNER_CONTRACT_STATUS.INVALID]: '无效'
}

// 获取业主合同状态文本
export const getHomeownerContractStatusText = (status) => {
  return HOMEOWNER_CONTRACT_STATUS_TEXT[status] || '未知状态'
}

// 租客收款状态枚举
export const TENANT_PAYMENT_STATUS = {
  NONE: 0,              // 无
  PENDING_VOUCHER: 1,   // 待上传凭证
  PENDING_REVIEW: 2,    // 待审核
  CONFIRMED: 3,         // 已确认
  REUPLOAD: 4,          // 重新上传
  CANCELLED: 5          // 已作废
}

// 租客收款状态文本映射
export const TENANT_PAYMENT_STATUS_TEXT = {
  [TENANT_PAYMENT_STATUS.NONE]: '-',
  [TENANT_PAYMENT_STATUS.PENDING_VOUCHER]: '待上传凭证',
  [TENANT_PAYMENT_STATUS.PENDING_REVIEW]: '待审核',
  [TENANT_PAYMENT_STATUS.CONFIRMED]: '已确认',
  [TENANT_PAYMENT_STATUS.REUPLOAD]: '重新上传',
  [TENANT_PAYMENT_STATUS.CANCELLED]: '已作废'
}

// 租客收款状态选项列表（用于下拉框）
export const TENANT_PAYMENT_STATUS_LIST = [
  { id: TENANT_PAYMENT_STATUS.PENDING_VOUCHER, lable: '待上传凭证' },
  { id: TENANT_PAYMENT_STATUS.PENDING_REVIEW, lable: '待审核' },
  { id: TENANT_PAYMENT_STATUS.CONFIRMED, lable: '已确认' },
  { id: TENANT_PAYMENT_STATUS.REUPLOAD, lable: '重新上传' },
  { id: TENANT_PAYMENT_STATUS.CANCELLED, lable: '已作废' }
]

// 获取租客收款状态文本
export const getTenantPaymentStatusText = (status) => {
  return TENANT_PAYMENT_STATUS_TEXT[status] || ''
}

// 业主收款状态枚举
export const HOMEOWNER_RECEIVE_STATUS = {
  NONE: 0,              // 无
  UNPAID: 1,            // 未收款
  CONFIRMED: 2,         // 确认收款
  PAID: 3,              // 已收款
  CANCELLED: 4          // 已作废
}

// 业主收款状态文本映射
export const HOMEOWNER_RECEIVE_STATUS_TEXT = {
  [HOMEOWNER_RECEIVE_STATUS.NONE]: '-',
  [HOMEOWNER_RECEIVE_STATUS.UNPAID]: '未收款',
  [HOMEOWNER_RECEIVE_STATUS.CONFIRMED]: '确认收款',
  [HOMEOWNER_RECEIVE_STATUS.PAID]: '已收款',
  [HOMEOWNER_RECEIVE_STATUS.CANCELLED]: '已作废'
}

// 获取业主收款状态文本
export const getHomeownerReceiveStatusText = (status) => {
  return HOMEOWNER_RECEIVE_STATUS_TEXT[status] || ''
}

// 支付方式枚举
export const PAYMENT_TYPE = {
  NONE: 0,              // 无
  WECHAT: 1,            // 微信
  ALIPAY: 2,            // 支付宝
  BANK: 3,              // 银行
  OTHER: 4              // 其它
}

// 支付方式文本映射
export const PAYMENT_TYPE_TEXT = {
  [PAYMENT_TYPE.NONE]: '-',
  [PAYMENT_TYPE.WECHAT]: '微信',
  [PAYMENT_TYPE.ALIPAY]: '支付宝',
  [PAYMENT_TYPE.BANK]: '银行',
  [PAYMENT_TYPE.OTHER]: '其它'
}

// 支付方式选项列表（用于下拉框）
export const PAYMENT_TYPE_LIST = [
  { value: PAYMENT_TYPE.NONE, lable: '-' },
  { value: PAYMENT_TYPE.WECHAT, lable: '微信' },
  { value: PAYMENT_TYPE.ALIPAY, lable: '支付宝' },
  { value: PAYMENT_TYPE.BANK, lable: '银行' },
  { value: PAYMENT_TYPE.OTHER, lable: '其它' }
]

// 获取支付方式文本
export const getPaymentTypeText = (type) => {
  return PAYMENT_TYPE_TEXT[type] || ''
}

// 通知状态枚举（通知状态：发送成功、发送失败）
export const NOTIFY_STATUS = {
  SUCCESS: 1,    // 发送成功
  FAILED: 2      // 发送失败
}

// 通知状态文本映射
export const NOTIFY_STATUS_TEXT = {
  [NOTIFY_STATUS.SUCCESS]: '发送成功',
  [NOTIFY_STATUS.FAILED]: '发送失败'
}

// 通知状态颜色映射
export const NOTIFY_STATUS_COLOR = {
  [NOTIFY_STATUS.SUCCESS]: '#67C23A',    // 绿色
  [NOTIFY_STATUS.FAILED]: '#F56C6C'      // 红色
}

// 通知模板类型枚举（基于 templateId）
export const NOTIFY_TEMPLATE_TYPE = {
  NEW_ACCOUNT: 1,              // 新账单通知
  URGE_ACCOUNT: 2,             // 催缴通知
  OVERDUE: 3,                  // 逾期提醒
  TENANT_RENEWAL: 4,           // 租客续约提醒
  TENANT_VACATE: 5,            // 租客退租提醒
  LANDLORD_RENEWAL: 6,         // 业主托管续约提醒
  LEGAL_URGING: 7,             // 法律催告
  WEATHER_REMINDER: 8,         // 天气提醒
  SEMI_ANNUAL_REPORT: 9,       // 半年报
  REPAIR_NOTIFY: 10            // 维修通知
}

// 通知模板类型文本映射（templateMsgDesc）
export const NOTIFY_TEMPLATE_TYPE_TEXT = {
  [NOTIFY_TEMPLATE_TYPE.NEW_ACCOUNT]: '新账单通知',
  [NOTIFY_TEMPLATE_TYPE.URGE_ACCOUNT]: '催缴通知',
  [NOTIFY_TEMPLATE_TYPE.OVERDUE]: '逾期提醒',
  [NOTIFY_TEMPLATE_TYPE.TENANT_RENEWAL]: '租客续约提醒',
  [NOTIFY_TEMPLATE_TYPE.TENANT_VACATE]: '租客退租提醒',
  [NOTIFY_TEMPLATE_TYPE.LANDLORD_RENEWAL]: '业主托管续约提醒',
  [NOTIFY_TEMPLATE_TYPE.LEGAL_URGING]: '法律催告',
  [NOTIFY_TEMPLATE_TYPE.WEATHER_REMINDER]: '天气提醒',
  [NOTIFY_TEMPLATE_TYPE.SEMI_ANNUAL_REPORT]: '半年报',
  [NOTIFY_TEMPLATE_TYPE.REPAIR_NOTIFY]: '维修通知'
}

// 手动发送通知模板类型列表（用于发送通知弹窗）
export const MANUAL_NOTIFY_TEMPLATE_LIST = [
  { value: NOTIFY_TEMPLATE_TYPE.LEGAL_URGING, label: NOTIFY_TEMPLATE_TYPE_TEXT[NOTIFY_TEMPLATE_TYPE.LEGAL_URGING] },
  { value: NOTIFY_TEMPLATE_TYPE.WEATHER_REMINDER, label: NOTIFY_TEMPLATE_TYPE_TEXT[NOTIFY_TEMPLATE_TYPE.WEATHER_REMINDER] },
  { value: NOTIFY_TEMPLATE_TYPE.SEMI_ANNUAL_REPORT, label: NOTIFY_TEMPLATE_TYPE_TEXT[NOTIFY_TEMPLATE_TYPE.SEMI_ANNUAL_REPORT] }
]

// 接收人类型枚举
export const RECIPIENT_TYPE = {
  TENANT: 1,    // 租客
  LANDLORD: 2   // 房东
}

// 接收人类型文本映射
export const RECIPIENT_TYPE_TEXT = {
  [RECIPIENT_TYPE.TENANT]: '租客',
  [RECIPIENT_TYPE.LANDLORD]: '房东'
}

// 接收状态枚举（读标识：0待签收，1已签收，2系统签收）
export const RECEIVE_STATUS = {
  PENDING: 0,       // 待签收
  SIGNED: 1,        // 已签收
  SYSTEM_SIGNED: 2  // 系统签收
}

// 接收状态文本映射
export const RECEIVE_STATUS_TEXT = {
  [RECEIVE_STATUS.PENDING]: '待签收',
  [RECEIVE_STATUS.SIGNED]: '已签收',
  [RECEIVE_STATUS.SYSTEM_SIGNED]: '系统签收'
}

// 触发方式枚举（消息触发方式：1系统/2手动）
export const TRIGGER_METHOD = {
  SYSTEM: 1,   // 系统
  MANUAL: 2    // 手动
}

// 触发方式文本映射
export const TRIGGER_METHOD_TEXT = {
  [TRIGGER_METHOD.SYSTEM]: '系统',
  [TRIGGER_METHOD.MANUAL]: '手动'
}

// 通知通道枚举
export const NOTIFY_CHANNEL = {
  WECHAT: 1,    // 微信
  SMS: 2        // 短信
}

// 通知通道文本映射
export const NOTIFY_CHANNEL_TEXT = {
  [NOTIFY_CHANNEL.WECHAT]: '微信',
  [NOTIFY_CHANNEL.SMS]: '短信'
}

// 获取通知状态文本
export const getNotifyStatusText = (status) => {
  return NOTIFY_STATUS_TEXT[status] || '未知状态'
}


// 获取接收人类型文本
export const getRecipientTypeText = (type) => {
  return RECIPIENT_TYPE_TEXT[type] || '未知'
}

// 获取接收状态文本
export const getReceiveStatusText = (status) => {
  return RECEIVE_STATUS_TEXT[status] || '未知状态'
}

// 发送状态枚举（接口使用）
export const SEND_STATUS = {
  FAILED: 2,    // 发送失败
  SUCCESS: 3    // 发送成功
}

// 发送状态文本映射
export const SEND_STATUS_TEXT = {
  [SEND_STATUS.FAILED]: '发送失败',
  [SEND_STATUS.SUCCESS]: '发送成功'
}

// 用户类型枚举（接口使用）
export const USER_TYPE = {
  TENANT: 1,      // 租户
  LANDLORD: 2,    // 房东
  ADMIN: 4        // 管理员
}

// 用户类型文本映射
export const USER_TYPE_TEXT = {
  [USER_TYPE.TENANT]: '租户',
  [USER_TYPE.LANDLORD]: '房东',
  [USER_TYPE.ADMIN]: '管理员'
}

// 获取触发方式文本
export const getTriggerMethodText = (method) => {
  return TRIGGER_METHOD_TEXT[method] || '未知'
}

// 获取通知通道文本（支持多通道）
export const getNotifyChannelText = (channels) => {
  if (!channels || channels.length === 0) return '-'
  if (Array.isArray(channels)) {
    return channels.map(ch => NOTIFY_CHANNEL_TEXT[ch] || '').filter(Boolean).join('、')
  }
  return NOTIFY_CHANNEL_TEXT[channels] || '-'
}
